package br.com.vendor_engine.repositorio;

import br.com.vendor_engine.entidades.Cliente;
import br.com.vendor_engine.entidades.Propostalocacao;
import br.com.vendor_engine.interfaces.InterfacePropostaLocacao;
import br.com.vendor_engine.xmlutil.NewHibernateUtil;
import java.util.Date;
import java.util.List;
import org.hibernate.classic.Session;

public class RepositorioPropostaLocacao implements InterfacePropostaLocacao{

    private Session s = NewHibernateUtil.getSessionFactory().getCurrentSession();
    private Propostalocacao pl = new Propostalocacao();

    @Override
    public void salvarPropostaLocacao(Cliente cliente, Date dataPropostaLocacao,
            Date validadePropostaLocacao, String slaPropostaLocacao, String tempoContratoPropostaLocacao,
            Float valorMensalPropostaLocacao) {

        pl.setIdPropostaLocacao(0);
        pl.setCliente(cliente);
        pl.setDataPropostaLocacao(dataPropostaLocacao);
        pl.setValidadePropostaLocacao(validadePropostaLocacao);
        pl.setSlaPropostaLocacao(slaPropostaLocacao);
        pl.setTempoContratoPropostaLocacao(tempoContratoPropostaLocacao);
        pl.setValorMensalPropostaLocacao(valorMensalPropostaLocacao);

        s.beginTransaction();
        s.save(pl);
        if (s.getTransaction().isActive()) {
            s.beginTransaction().commit();
            if (s.isOpen()) {
                s.flush();
            }
        }
        if (s.isOpen()) {
            s.close();
            System.out.println("Fechada");
        }

    }

    @Override
    public Propostalocacao getPropostaLocacao() {
        return pl;
    }

    @Override
    public void alterarPropostaLocacao(int idPropostaLocacao, Cliente cliente, Date dataPropostaLocacao, 
    Date validadePropostaLocacao, String slaPropostaLocacao, String tempoContratoPropostaLocacao, 
    Float valorMensalPropostaLocacao) {
        
        pl.setIdPropostaLocacao(idPropostaLocacao);
        pl.setCliente(cliente);
        pl.setDataPropostaLocacao(dataPropostaLocacao);
        pl.setValidadePropostaLocacao(validadePropostaLocacao);
        pl.setSlaPropostaLocacao(slaPropostaLocacao);
        pl.setTempoContratoPropostaLocacao(tempoContratoPropostaLocacao);
        pl.setValorMensalPropostaLocacao(valorMensalPropostaLocacao);

        s.beginTransaction();
        s.save(pl);
        if (s.getTransaction().isActive()) {
            s.beginTransaction().commit();
            if (s.isOpen()) {
                s.flush();
            }
        }
        if (s.isOpen()) {
            s.close(); 
            System.out.println("Fechada");
        }
        
    }

    @Override
    public List<Propostalocacao> pegarTodosPropostaLocacao() {
        s.beginTransaction();
        List<Propostalocacao> list = (List<Propostalocacao>) s.createQuery("from Propostalocacao").list();
        return list;        
    }
}
